#!/bin/bash  
#########
#本脚本适用于centos7
#########

# 检查是否为root用户执行  
if [ "$(id -u)" != "0" ]; then  
   echo "此脚本必须以root权限运行" 1>&2  
   exit 1  
fi  

#添加ELRepo仓库函数
addRepo(){
    # 安装ELRepo仓库  
    rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org  
    rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm  
    # 清除YUM缓存  
    yum clean all  
}

# 安装内核函数
install_kernel(){
    # 列出可用的内核版本  
    yum --disablerepo="*" --enablerepo="elrepo-kernel" list available | grep kernel  

    echo "是否安装内核版本 (y/n)"
    read response

    # 安装选定的内核版本  
    # yum --disablerepo="*" --enablerepo="elrepo-kernel" install -y $kernel_version  


    if [ "$response" == "y" ]; then
    # 询问用户要安装哪个版本的内核  
    echo "请选择一个内核版本进行安装 (例如: kernel-ml.x86_64):"  
    read kernel_version 
    yum --disablerepo="*" --enablerepo="elrepo-kernel" install -y $kernel_version  
    echo "内核安装成功"
    else
        echo "取消安装内核版本"  
    fi

}


#切换开机默认启动的内核函数
switch_Kernel(){

#查看可用内核版本及启动顺序
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg

# 设置内核版本启动循序
echo "请选择默认启动的内核，例如 0"
read set_sw

SET="grub2-set-default $set_sw"
$SET

RESULT=$?

# 判断命令是否执行成功  
if [ $RESULT -eq 0 ]; then
    echo "echo $SET 内核版本已切换成功 。"  
    # 在这里添加命令成功后的操作  
    sed -i  "s#GRUB_DEFAULT=save#GRUB_DEFAULT=0#"  /etc/default/grub
else
    echo "命令 $SET 执行失败，退出状态码为 $RESULT。" 
fi


# 询问用户是否要重启以应用新内核  
echo "新内核已安装，是否要立即重启系统以应用新内核？(y/n)"  
read response

if [ "$response" == "y" ]; then
    echo "正在重启系统..."  
    reboot
else
    echo "未重启系统，请手动重启以应用新内核。"  
fi


}

#addRepo
install_kernel
switch_Kernel



